//! ThisILove.debug.js
//

(function() {

Type.registerNamespace('ThisILove');

////////////////////////////////////////////////////////////////////////////////
// ThisILove.ListEditor

ThisILove.ListEditor = function ThisILove_ListEditor() {
    /// <field name="textBoxOuterStyles" type="Array" elementType="String" static="true">
    /// </field>
    /// <field name="textBoxInnerStyles" type="Array" elementType="String" static="true">
    /// </field>
}
ThisILove.ListEditor.getCssOuter = function ThisILove_ListEditor$getCssOuter(el) {
    /// <param name="el" type="jQueryObject">
    /// </param>
    /// <returns type="Object"></returns>
    Inform.dump(el.getStyles(), 'Styles');
    var css = {};
    var $enum1 = ss.IEnumerator.getEnumerator(ThisILove.ListEditor.textBoxOuterStyles);
    while ($enum1.moveNext()) {
        var s = $enum1.current;
        var v = el.css(s);
        if (!String.isNullOrEmpty(v)) {
            css[s] = v;
        }
    }
    var p = el.offset();
    css = $.extend(css, { top: p.top, left: p.left, width: el.width(), overflow: 'visible', 'white-space': 'normal', 'background-color': Css.realBgColor(el) });
    Inform.dump(css, 'OuterCss');
    return css;
}
ThisILove.ListEditor.getCssInner = function ThisILove_ListEditor$getCssInner(el) {
    /// <param name="el" type="jQueryObject">
    /// </param>
    /// <returns type="Object"></returns>
    var ctt = el.children().first().find('.GigC').first();
    var css = {};
    var $enum1 = ss.IEnumerator.getEnumerator(ThisILove.ListEditor.textBoxInnerStyles);
    while ($enum1.moveNext()) {
        var s = $enum1.current;
        css[s] = el.css(s);
    }
    var p = ctt.position();
    css = $.extend(css, { position: 'relative', top: -2, left: -4, width: ctt.innerWidth(), height: ctt.innerHeight(), overflow: 'visible', 'background-color': Css.realBgColor(el), border: 'none', margin: 0, padding: '2px 4px' });
    Inform.dump(css, 'InnerCss');
    return css;
}
ThisILove.ListEditor.value = function ThisILove_ListEditor$value(el) {
    /// <param name="el" type="jQueryObject">
    /// </param>
    /// <returns type="String"></returns>
    var tx = el.data('tx');
    if (tx != null) {
        return tx.val();
    }
    return null;
}
ThisILove.ListEditor.editFinish = function ThisILove_ListEditor$editFinish(el) {
    /// <param name="el" type="jQueryObject">
    /// </param>
    /// <returns type="String"></returns>
    Cluster.glassStay(false);
    Cluster.glassOff(true);
    return ThisILove.ListEditor.value(el);
}
ThisILove.ListEditor.editText = function ThisILove_ListEditor$editText(el, content) {
    /// <param name="el" type="jQueryObject">
    /// </param>
    /// <param name="content" type="String">
    /// </param>
    content = String.format('{0}\n\t', content);
    var isList = true;
    var wrap = (isList) ? 'off' : 'soft';
    var bx = $('<div/>');
    var tx = $("<textarea class='AboveHider' wrap='" + wrap + "' style='position:absolute;padding:0;margin:0;border: 0px none transparent'/>");
    el.data('tx', tx);
    var editKeys = { '13:s': function(ek) {
        DomElement.cancelEvent(ek);
        Cluster.glassOff();
    }, '27:': function(ek) {
        DomElement.cancelEvent(ek);
        Cluster.glassOff();
    }, '9:': function(ek) {
        DomElement.cancelEvent(ek);
        Helpers.insertText(tx, '\t');
    } };
    var cssOuter = ThisILove.ListEditor.getCssOuter(el);
    var cssInner = ThisILove.ListEditor.getCssInner(el);
    bx.append(tx).appendTo(document.body).css(cssOuter);
    tx.css(cssInner).fValue(content).bind('keydown.editev', function(e2) {
        var k = Keys.doKeys(e2, editKeys);
        if (k == null) {
            return;
        }
        if (isList) {
            if (e2.which === 13) {
                window.setTimeout(function() {
                    tx.val(tx.val().replace(/[\n]([^\t])|\n$/g, '\n\t$1'));
                }, 1);
            }
            else if (e2.which === 8) {
                window.setTimeout(function() {
                    tx.val(tx.val().replace(/[\n]([^\t])|\n$/g, '$1'));
                }, 1);
            }
        }
    }).click().focus().carotToEnd();
    Cluster.glass(function() {
        Cluster.glassStay();
        tx.click().focus().carotToEnd();
    });
    GigEdit.textAreaExpander(tx);
    if (isList) {
        DomElement.trigger('TabLineCounter', tx);
    }
    el.css({ color: 'transparent' }).hide();
}
ThisILove.ListEditor.editText2 = function ThisILove_ListEditor$editText2(el) {
    /// <param name="el" type="jQueryObject">
    /// </param>
    var ggd = new WhirliGig.Classes.GigData(null);
    ggd.type = 'TextItem';
    ggd.listType = 'ol';
    ggd.css = el.getStyles();
    var escape = false;
    var cfg = GigShow.cssMap[ggd.type];
    var isList = !String.isNullOrEmpty(ggd.listType);
    var ctt = el.children().first().find(cfg.inner).first();
    el.find('.Cover').hide();
    var css = ggd.css;
    var css2 = $.extend({}, css);
    delete css2.margin;
    delete css2.padding;
    delete css2['border-style'];
    delete css2['border-width'];
    delete css2['padding-top'];
    delete css2['padding-left'];
    delete css2['padding-right'];
    delete css2['padding-bottom'];
    css2['overflow'] = 'hidden';
    if (cfg.css) {
        var pv = Css.paddingTop(css, Gig.deefCss['padding-top']);
        var ph = Css.paddingLeft(css, Gig.deefCss['padding-left']);
        css2['color'] = ctt.css('color');
        css2['background-color'] = Css.realBgColor(ctt);
        var p = ctt.offset();
        $.extend(css2, { top: p.top, left: p.left, width: ctt.innerWidth() - ph - ph, height: ctt.innerHeight() - pv - pv });
        $.extend(css2, { 'padding-left': ph, 'padding-right': ph, 'padding-top': pv, 'padding-bottom': 0 });
    }
    else {
        delete css2['border-radius'];
        delete css2['-moz-border-radius'];
        delete css2['-webkit-border-radius'];
        css2['color'] = el.css('color');
        css2['background-color'] = Css.realBgColor(el);
        var p = ctt.offset();
        $.extend(css2, { top: p.top - 1, left: p.left - 2, width: ctt.innerWidth() + 4, height: ctt.innerHeight() + 2 });
        $.extend(css2, { 'padding-left': 2, 'padding-right': 2, 'padding-top': 1, 'padding-bottom': 1 });
    }
    if (cfg.inner === 'button') {
        css2['text-align'] = 'center';
    }
    var wrap = (isList) ? 'off' : 'soft';
    var tx = $("<textarea class='GigEditText AboveHider' wrap='" + wrap + "' style='position:absolute;padding:0;margin:0;border: 0px none transparent'/>");
    var sw = el.innerWidth();
    var sh = el.innerHeight();
    var value = ctt.getContent();
    Cluster.glass(function() {
        tx.blur();
    }).css({ 'background-color': 'rgba(0,0,0,.25)' });
    var editKeys = { '13:s': function(ek) {
        DomElement.cancelEvent(ek);
        Cluster.glassOff();
    }, '27:': function(ek) {
        DomElement.cancelEvent(ek);
        escape = true;
        Cluster.glassOff();
    }, '9:': function(ek) {
        DomElement.cancelEvent(ek);
        Helpers.insertText(tx, '\t');
    } };
    tx.appendTo(document.body).css(css2).fValue(GigParse.htmlToList(value, ggd.listType)).bind('blur.editev', function() {
        DomElement.trigger('TabLineCounter', false);
        GigShow.mapCss(ggd, el, css);
        ctt.show();
        var w = tx.innerWidth();
        var h = tx.innerHeight();
        if (w >= sw + 10) {
            el.css({ width: w });
        }
        if (h >= sh + 10) {
            el.css({ height: h });
        }
        if (!escape) {
            var txt = GigParse.listToHtml(tx.getFEditString(), ggd.listType);
            txt = (String.isNullOrEmpty(txt.trim())) ? GigEdit.yourText : txt;
            var elx = el.find(cfg.inner);
            elx.setContent(txt);
            ggd.html = GigEdit.replaceText(ggd.html, txt);
        }
        ctt.show();
        el.find('.Cover').show();
        el.find('.CoverInner').show();
        tx.unbind('.editev').remove();
        Cluster.glassOff(true);
    }).bind('keydown.editev', function(e2) {
        var k = Keys.doKeys(e2, editKeys);
        if (k == null) {
            return;
        }
        if (isList) {
            if (e2.which === 13) {
                window.setTimeout(function() {
                    tx.val(tx.val().replace(/[\n]([^\t])|\n$/g, '\n\t$1'));
                }, 1);
            }
            else if (e2.which === 8) {
                window.setTimeout(function() {
                    tx.val(tx.val().replace(/[\n]([^\t])|\n$/g, '$1'));
                }, 1);
            }
        }
    }).click().focus().carotToEnd();
    if (tx.val() === GigEdit.yourText) {
        tx.val('');
    }
    GigEdit.textAreaExpander(tx);
    ctt.hide();
    if (isList) {
        DomElement.trigger('TabLineCounter', tx);
    }
}


////////////////////////////////////////////////////////////////////////////////
// ThisILove.ListEntry

ThisILove.ListEntry = function ThisILove_ListEntry() {
    /// <field name="listBox" type="jQueryObject" static="true">
    /// </field>
    /// <field name="listBoxWrapper" type="jQueryObject" static="true">
    /// </field>
    /// <field name="thisILoveDataKey" type="String" static="true">
    /// </field>
}
ThisILove.ListEntry.Widget = function ThisILove_ListEntry$Widget() {
    ThisILove.ListEntry.listBox = $('#ListBox');
    ThisILove.ListEntry.listBoxWrapper = ThisILove.ListEntry.listBox.closest('.Gig').hide();
}
ThisILove.ListEntry.startList = function ThisILove_ListEntry$startList() {
    ThisILove.ListEntry.listBox.html(ThisILove.ListEntry.newList(ThisILove.WordList.get_word()));
    ThisILove.ListEntry.listBoxWrapper.fadeIn(400, function() {
        ThisILove.ListEditor.editText(ThisILove.ListEntry.listBoxWrapper, ThisILove.WordList.get_word());
    });
}
ThisILove.ListEntry.getData = function ThisILove_ListEntry$getData() {
    /// <returns type="Object"></returns>
    return Nsb.Storage.getLocal('ThisILoveData') || {};
}
ThisILove.ListEntry.saveData = function ThisILove_ListEntry$saveData() {
    var data = ThisILove.ListEntry.getData();
    data[new Date().getTime().toString()] = ThisILove.ListEditor.editFinish(ThisILove.ListEntry.listBoxWrapper);
    Nsb.Storage.setLocal('ThisILoveData', data);
}
ThisILove.ListEntry.showData = function ThisILove_ListEntry$showData() {
    var t = ThisILove.ListEntry.listBox.position().top;
    var h = ThisILove.ListEntry.listBox.height();
    $('.AutoData').remove();
    var $dict1 = ThisILove.ListEntry.getData();
    for (var $key2 in $dict1) {
        var p = { key: $key2, value: $dict1[$key2] };
        var nw = ThisILove.ListEntry.listBox.clone().insertAfter(ThisILove.ListEntry.listBox);
        nw.find('.GigC').first().html(p.value);
        var d = t + h + 10;
        nw.css({ top: d });
        t += d;
        h = nw.height();
    }
}
ThisILove.ListEntry.newList = function ThisILove_ListEntry$newList(word) {
    /// <param name="word" type="String">
    /// </param>
    /// <returns type="String"></returns>
    return String.format('<h3>{0}</h3><ol></ol>', word);
}


////////////////////////////////////////////////////////////////////////////////
// ThisILove.WordList

ThisILove.WordList = function ThisILove_WordList() {
    /// <field name="_word" type="String" static="true">
    /// </field>
}
ThisILove.WordList.EntryPage = function ThisILove_WordList$EntryPage() {
    Inform.debug('WordList.Page()');
    $(document).unbind('.wordlist');
    $(document).bind('OnPageSave.wordlist', ThisILove.WordList.saveList);
}
ThisILove.WordList.Widget = function ThisILove_WordList$Widget() {
    ThisILove.WordList.presentWord();
}
ThisILove.WordList.get_word = function ThisILove_WordList$get_word() {
    /// <value type="String"></value>
    if (String.isNullOrEmpty(ThisILove.WordList._word)) {
        ThisILove.WordList.presentWord();
    }
    return ThisILove.WordList._word;
}
ThisILove.WordList.presentWord = function ThisILove_WordList$presentWord() {
    var wordList = '#WordList';
    new Await().loadJson(wordList, Uri.dbPath('wordlist.txt')).addDx(function() {
        var words = Await.files[wordList];
        ThisILove.WordList._word = words[Formulas.randomOf(words.length)];
        var el = $(wordList);
        el.html(ThisILove.WordList._word);
    }).commit();
}
ThisILove.WordList.saveList = function ThisILove_WordList$saveList(e, arg) {
    /// <param name="e" type="jQueryEvent">
    /// </param>
    /// <param name="arg" type="Object">
    /// </param>
    var words = [];
    var el = $('#WordList');
    var ls = $('li', el);
    ls.each(function(i, domEl) {
        var t = $(domEl);
        words.add(t.text().trim());
    });
    FileBlobBase.storeBlobAw(Await.get_asyncAw(), 'db', 'wordlist', DomElement.resultRx, words);
}


////////////////////////////////////////////////////////////////////////////////
// ThisILove.Timer

ThisILove.Timer = function ThisILove_Timer() {
    /// <field name="quarterBellKey" type="String" static="true">
    /// </field>
    /// <field name="bellSound" type="String" static="true">
    /// </field>
    /// <field name="clinkSound" type="String" static="true">
    /// </field>
    /// <field name="whiperwillSound" type="String" static="true">
    /// </field>
    /// <field name="indicator" type="jQueryObject" static="true">
    /// </field>
    /// <field name="quarterBell" type="Boolean" static="true">
    /// </field>
    /// <field name="running" type="Boolean" static="true">
    /// </field>
    /// <field name="waiter" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="timerText" type="jQueryObject" static="true">
    /// </field>
    /// <field name="timerWrapper" type="jQueryObject" static="true">
    /// </field>
    /// <field name="message" type="jQueryObject" static="true">
    /// </field>
    /// <field name="sound0" type="jQueryObject" static="true">
    /// </field>
    /// <field name="sound1" type="jQueryObject" static="true">
    /// </field>
    /// <field name="sound2" type="jQueryObject" static="true">
    /// </field>
    /// <field name="sound4" type="jQueryObject" static="true">
    /// </field>
    /// <field name="catCallSound" type="String" static="true">
    /// </field>
    /// <field name="beginSound" type="String" static="true">
    /// </field>
    /// <field name="doneSound" type="String" static="true">
    /// </field>
    /// <field name="readyTime" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="period" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="t1" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="t2" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="t3" type="Number" integer="true" static="true">
    /// </field>
}
ThisILove.Timer.Widget = function ThisILove_Timer$Widget() {
    ThisILove.Timer.timerText = $('#Timer').html('');
    ThisILove.Timer.timerWrapper = ThisILove.Timer.timerText.closest('.Gig').hide();
    ThisILove.Timer.message = $('#Message').html('').hide();
    ThisILove.Timer.message.html('').hide().removeClass('Bigger');
    if (Nsb.Storage.getLocal('TmrPgQtrBell') == null) {
        Nsb.Storage.setLocal('TmrPgQtrBell', true);
    }
    ThisILove.Timer.quarterBell = Nsb.Storage.getLocal('TmrPgQtrBell');
    ThisILove.Timer.sound0 = $("<audio preload='auto'/>").attr('src', ThisILove.Timer.beginSound);
    ThisILove.Timer.sound1 = $("<audio preload='auto'/>").attr('src', 'http://www.rangde.org/static/bell-ring-01.mp3');
    ThisILove.Timer.sound2 = $("<audio preload='auto'/>").attr('src', ThisILove.Timer.doneSound);
    ThisILove.Timer.sound4 = $("<audio preload='auto'/>").attr('src', ThisILove.Timer.catCallSound);
    var time1 = new LoaTools.WidgetTimer();
    var time2 = new LoaTools.WidgetTimer();
    time1.duration = ThisILove.Timer.readyTime;
    time1.onBegin = function() {
        ThisILove.Timer.running = true;
        ThisILove.Timer.timerWrapper.fadeIn(ThisILove.Timer.t1);
        ThisILove.Timer.timerText.html('Get Ready').fadeIn(ThisILove.Timer.t1).fadeOut(ThisILove.Timer.t2);
        ThisILove.Timer.message.html('').hide();
        ThisILove.ListEntry.startList();
    };
    time1.onTick = function(t) {
        if (t.tickDn === 2) {
            ThisILove.Timer.timerText.html('Get Set').fadeIn(ThisILove.Timer.t1).fadeOut(ThisILove.Timer.t2);
        }
    };
    time1.onEnd = function() {
        LoaTools.WidgetTimer.playSound(ThisILove.Timer.sound1, 0.75);
        time2.startEv();
    };
    time2.duration = ThisILove.Timer.period;
    time2.onBegin = function() {
        ThisILove.Timer.timerText.fadeIn(ThisILove.Timer.t1).html('68');
        ThisILove.Timer.message.html('GO').fadeIn(ThisILove.Timer.t1).fadeOut(ThisILove.Timer.t3);
    };
    time2.onTick = function(t) {
        ThisILove.Timer.timerText.html(t.tickDn.toString());
    };
    time2.onEnd = function() {
        ThisILove.ListEntry.saveData();
        LoaTools.WidgetTimer.playSound(ThisILove.Timer.sound2, 0.75);
        ThisILove.Timer.waiter = window.setTimeout(function() {
            LoaTools.WidgetTimer.playSound(ThisILove.Timer.sound4, 0.1);
            ThisILove.Timer.waiter = window.setTimeout(ThisILove.Timer.cleanup, 1000);
            ThisILove.Timer.timerText.html('Done');
        }, 3500);
    };
    $('#GoButton').closest('.Gig').click(ss.Delegate.create(time1, time1.startEv));
}
ThisILove.Timer.cleanup = function ThisILove_Timer$cleanup() {
    window.clearTimeout(ThisILove.Timer.waiter);
    ThisILove.Timer.running = false;
}
ThisILove.Timer.quarterBellEv = function ThisILove_Timer$quarterBellEv(e) {
    /// <param name="e" type="jQueryEvent">
    /// </param>
    ThisILove.Timer.quarterBell = !ThisILove.Timer.quarterBell;
    $('#QuarterBell').html((ThisILove.Timer.quarterBell) ? 'ON' : 'OFF');
    Nsb.Storage.setLocal('TmrPgQtrBell', ThisILove.Timer.quarterBell);
}


////////////////////////////////////////////////////////////////////////////////
// ThisILove.Application

ThisILove.Application = function ThisILove_Application() {
}
ThisILove.Application.Page = function ThisILove_Application$Page() {
    Inform.debug('ThisILove.Application.Page()');
    new Await().loadCss(Uri.app('cs/ThisILove.css')).addDx(function() {
        $('#ThisILoveBtn').closest('.Gig').click(function() {
            ThisILove.ListEditor.editText(ThisILove.ListEntry.listBoxWrapper.show(), ThisILove.WordList.get_word());
        });
        ThisILove.ListEntry.showData();
    }).commit();
}


Type.registerNamespace('LoaTools');

////////////////////////////////////////////////////////////////////////////////
// LoaTools.WidgetTimer

LoaTools.WidgetTimer = function LoaTools_WidgetTimer() {
    /// <field name="startTm" type="Number" integer="true">
    /// </field>
    /// <field name="stopTm" type="Number" integer="true">
    /// </field>
    /// <field name="endTm" type="Number" integer="true">
    /// </field>
    /// <field name="ticks" type="Number" integer="true">
    /// </field>
    /// <field name="tickUp" type="Number" integer="true">
    /// </field>
    /// <field name="tickDn" type="Number" integer="true">
    /// </field>
    /// <field name="interval" type="Number" integer="true">
    /// </field>
    /// <field name="duration" type="Number" integer="true">
    /// </field>
    /// <field name="onBegin" type="System.Action`1">
    /// </field>
    /// <field name="onEnd" type="System.Action`1">
    /// </field>
    /// <field name="onStart" type="System.Action`1">
    /// </field>
    /// <field name="onStop" type="System.Action`1">
    /// </field>
    /// <field name="onTick" type="System.Action`1">
    /// </field>
    /// <field name="onCancel" type="System.Action`1">
    /// </field>
    /// <field name="marks" type="Array">
    /// </field>
    /// <field name="timer" type="Number" integer="true">
    /// </field>
    /// <field name="element" type="jQueryObject">
    /// </field>
    /// <field name="done" type="Boolean">
    /// </field>
    /// <field name="ev" type="jQueryEvent">
    /// </field>
}
LoaTools.WidgetTimer.playSound = function LoaTools_WidgetTimer$playSound(sound, volume) {
    /// <param name="sound" type="jQueryObject">
    /// </param>
    /// <param name="volume" type="Number">
    /// </param>
    sound[0].volume = volume;
    sound[0].play();
}
LoaTools.WidgetTimer.prototype = {
    startTm: 0,
    stopTm: 0,
    endTm: 0,
    ticks: 0,
    tickUp: 0,
    tickDn: 0,
    interval: 1000,
    duration: 1000,
    onBegin: null,
    onEnd: null,
    onStart: null,
    onStop: null,
    onTick: null,
    onCancel: null,
    marks: null,
    timer: 0,
    element: null,
    done: false,
    ev: null,
    
    trigger: function LoaTools_WidgetTimer$trigger() {
        this.tickUp++;
        this.tickDn--;
        if (this.onTick != null) {
            this.onTick(this);
        }
        if (new Date().getTime() >= this.endTm) {
            window.clearInterval(this.timer);
            if (this.onEnd != null) {
                this.onEnd(this);
            }
            this.done = true;
        }
    },
    
    startEv: function LoaTools_WidgetTimer$startEv(e) {
        /// <param name="e" type="jQueryEvent">
        /// </param>
        this.ev = e;
        window.clearInterval(this.timer);
        if (!this.startTm) {
            this.startTm = new Date().getTime();
            this.endTm = this.startTm + this.duration;
            this.ticks = this.tickDn = parseInt(this.duration / this.interval);
            if (this.onBegin != null) {
                this.onBegin(this);
            }
        }
        else {
            var dl = new Date().getTime() - this.stopTm;
            this.startTm += dl;
            this.endTm += dl;
        }
        if (this.onStart != null) {
            this.onStart(this);
        }
        this.timer = window.setInterval(ss.Delegate.create(this, this.trigger), this.interval);
    },
    
    stopEv: function LoaTools_WidgetTimer$stopEv(e) {
        /// <param name="e" type="jQueryEvent">
        /// </param>
        this.ev = e;
        window.clearInterval(this.timer);
        this.stopTm = new Date().getTime();
        if (this.onStop != null) {
            this.onStop(this);
        }
    },
    
    cancelEv: function LoaTools_WidgetTimer$cancelEv(e) {
        /// <param name="e" type="jQueryEvent">
        /// </param>
        this.ev = e;
        this.done = true;
        window.clearInterval(this.timer);
        if (this.onCancel != null) {
            this.onCancel(this);
        }
    }
}


ThisILove.ListEditor.registerClass('ThisILove.ListEditor');
ThisILove.ListEntry.registerClass('ThisILove.ListEntry');
ThisILove.WordList.registerClass('ThisILove.WordList');
ThisILove.Timer.registerClass('ThisILove.Timer');
ThisILove.Application.registerClass('ThisILove.Application');
LoaTools.WidgetTimer.registerClass('LoaTools.WidgetTimer');
ThisILove.ListEditor.textBoxOuterStyles = [ 'display', 'position', 'color', 'background-color', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'padding-top', 'padding-left', 'padding-right', 'padding-bottom', 'border-top-style', 'border-left-style', 'border-right-style', 'border-bottom-style', 'border-top-color', 'border-left-color', 'border-right-color', 'border-bottom-color', 'border-top-width', 'border-left-width', 'border-right-width', 'border-bottom-width', 'border-top-left-radius', 'border-top-right-radius', 'border-bottom-left-radius', 'border-bottom-right-radius', '-webkit-border-radius', '-webkit-border-top-radius', '-webkit-border-left-radius', '-webkit-border-right-radius', '-webkit-border-bottom-radius', '-moz-border-radius', '-moz-border-top-radius', '-moz-border-left-radius', '-moz-border-right-radius', '-moz-border-bottom-radius', 'font-family', 'font-size', 'font-weight', 'text-decoration', 'line-height', 'white-space' ];
ThisILove.ListEditor.textBoxInnerStyles = [ 'color', 'background-color', 'font-family', 'font-size', 'font-weight', 'text-decoration', 'line-height' ];
ThisILove.ListEntry.listBox = null;
ThisILove.ListEntry.listBoxWrapper = null;
ThisILove.ListEntry.thisILoveDataKey = 'ThisILoveData';
ThisILove.WordList._word = null;
ThisILove.Timer.quarterBellKey = 'TmrPgQtrBell';
ThisILove.Timer.bellSound = 'http://www.rangde.org/static/bell-ring-01.mp3';
ThisILove.Timer.clinkSound = 'http://soundjax.com/reddo/31398%5Eglass-clink-3.mp3';
ThisILove.Timer.whiperwillSound = 'http://soundjax.com/reddo/70117%5Ebird1.mp3';
ThisILove.Timer.indicator = null;
ThisILove.Timer.quarterBell = true;
ThisILove.Timer.running = false;
ThisILove.Timer.waiter = 0;
ThisILove.Timer.timerText = null;
ThisILove.Timer.timerWrapper = null;
ThisILove.Timer.message = null;
ThisILove.Timer.sound0 = null;
ThisILove.Timer.sound1 = null;
ThisILove.Timer.sound2 = null;
ThisILove.Timer.sound4 = null;
ThisILove.Timer.catCallSound = Uri.app('md/Sounds/CatCall.mp3');
ThisILove.Timer.beginSound = Uri.app('md/Sounds/Begin.mp3');
ThisILove.Timer.doneSound = Uri.app('md/Sounds/Done.mp3');
ThisILove.Timer.readyTime = 4000;
ThisILove.Timer.period = 68000;
ThisILove.Timer.t1 = 150;
ThisILove.Timer.t2 = 2000;
ThisILove.Timer.t3 = 3000;
})();

//! This script was generated using Script# v0.7.4.0
